---
displayed_sidebar: "Chinese"
---

# date_format

## 功能

将日期类型按照 `format` 的类型转化为字符串。

当前支持最大 128 字节的字符串，如果返回值长度超过 128，则返回 NULL。

* `date` 参数是合法的日期。
* `format` 指定日期/时间的输出格式。

可以使用的格式有：

```Plain Text
%a | 缩写星期名
%b | 缩写月名
%c | 月，数值
%D | 带有英文前缀的月中的天
%d | 月的天，数值(00-31)
%e | 月的天，数值(0-31)
%f | 微秒
%H | 小时 (00-23)
%h | 小时 (01-12)
%I | 小时 (01-12)
%i | 分钟，数值(00-59)
%j | 年的天 (001-366)
%k | 小时 (0-23)
%l | 小时 (1-12)
%M | 月名
%m | 月，数值(00-12)
%p | AM 或 PM
%r | 时间，12-小时（hh:mm:ss AM 或 PM）
%S | 秒(00-59)
%s | 秒(00-59)
%T | 时间，24-小时 (hh:mm:ss)
%U | 周 (00-53) 星期日是一周的第一天
%u | 周 (00-53) 星期一是一周的第一天
%V | 周 (01-53) 星期日是一周的第一天，与 %X 使用
%v | 周 (01-53) 星期一是一周的第一天，与 %x 使用
%W | 星期名
%w | 周的天 （0=星期日，6=星期六）
%X | 年，其中的星期日是周的第一天，4 位，与 %V 使用
%x | 年，其中的星期一是周的第一天，4 位，与 %v 使用
%Y | 年，4 位
%y | 年，2 位
%% | 用于表示 %
```

## 语法

```Haskell
VARCHAR DATE_FORMAT(DATETIME date, VARCHAR format)
```

## 示例

```Plain Text
select date_format('2009-10-04 22:23:00', '%W %M %Y');
+------------------------------------------------+
| date_format('2009-10-04 22:23:00', '%W %M %Y') |
+------------------------------------------------+
| Sunday October 2009                            |
+------------------------------------------------+

select date_format('2007-10-04 22:23:00', '%H:%i:%s');
+------------------------------------------------+
| date_format('2007-10-04 22:23:00', '%H:%i:%s') |
+------------------------------------------------+
| 22:23:00                                       |
+------------------------------------------------+

select date_format('1900-10-04 22:23:00', '%D %y %a %d %m %b %j');
+------------------------------------------------------------+
| date_format('1900-10-04 22:23:00', '%D %y %a %d %m %b %j') |
+------------------------------------------------------------+
| 4th 00 Thu 04 10 Oct 277                                   |
+------------------------------------------------------------+

select date_format('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');
+------------------------------------------------------------+
| date_format('1997-10-04 22:23:00', '%H %k %I %r %T %S %w') |
+------------------------------------------------------------+
| 22 22 10 10:23:00 PM 22:23:00 00 6                         |
+------------------------------------------------------------+

select date_format('1999-01-01 00:00:00', '%X %V');
+---------------------------------------------+
| date_format('1999-01-01 00:00:00', '%X %V') |
+---------------------------------------------+
| 1998 52                                     |
+---------------------------------------------+

select date_format('2006-06-01', '%d');
+------------------------------------------+
| date_format('2006-06-01 00:00:00', '%d') |
+------------------------------------------+
| 01                                       |
+------------------------------------------+

select date_format('2006-06-01', '%%%d');
+--------------------------------------------+
| date_format('2006-06-01 00:00:00', '%%%d') |
+--------------------------------------------+
| %01                                        |
+--------------------------------------------+
```
